
import org.apache.commons.io.FileUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;


import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

//public class Testll {
//    public static class TestllMap extends Mapper<LongWritable, Text, Text, MapReduce> {
//        Text text = new Text();
//
//        @Override
//        protected void map(LongWritable key, Text value, Context context) throws java.io.IOException, InterruptedException {

//            public static Text transformTextToUTF8(Text text, String encoding) {
//                String value = null;
//                try {
//                    value = new String(text.getBytes(), 0, text.getLength(), encoding);
//                } catch (UnsupportedEncodingException e) {
//                    e.printStackTrace();
//                }
//                return new Text(value);
//            }
//
//
//            String line = value.toString();
//            String[] split = line.split(",");
//            //订单ID
//            String id = split[0];
//            //用户ID
//            String ids = split[1];
//            //综合
//            double price = Double.parseDouble(split[3]) * Double.parseDouble(split[4]);
//
//            text.set(id);
//            context.write(new Text(id), new MapReduce(id, split[2], ids, price));
//        }
//    }

//    public static class TestllReduce extends Reducer<Text, MapReduce, MapReduce, NullWritable> {
//
//        @Override
//        protected void reduce(Text key, Iterable<MapReduce> values, Context context) throws IOException, InterruptedException {
//
//            List<MapReduce> list = new ArrayList<MapReduce>();
//            for (MapReduce value : values) {
//                MapReduce mapReduce = new MapReduce(value.getId(), value.getIds(), value.getName());
//                list.add(mapReduce);
//            }
//            Collections.sort(list);
//            for (int i = 0; i < list.size(); i++) {
//                if (i == 3) {
//                    break;
//                }
//                context.write(list.get(i), NullWritable.get());
//
//            }
//        }
//    }
//
//    public static void main(String[] args) {
//        Configuration config = new Configuration();
//        try {
//            Job job = Job.getInstance(config);
//            job.setJarByClass(Testll.class);
//
//            job.setMapperClass(TestllMap.class);
//            job.setReducerClass(TestllReduce.class);
//
//            job.setMapOutputKeyClass(Text.class);
//            job.setOutputValueClass(MapReduce.class);
//
//            job.setMapOutputKeyClass(Testll.class);
//            job.setOutputValueClass(NullWritable.class);
//
//            job.setNumReduceTasks(1);
//
//            File file = new File("f:/all/a/b.txt");
//            if (file.exists()) {
//                FileUtils.deleteDirectory(file);
//            }
//
//            FileInputFormat.addInputPath(job, new Path("F:/all/a/a.txt"));
//            FileOutputFormat.setOutputPath(job, new Path("F:/all/a/b.txt"));
//            job.setNumReduceTasks(1);
//
//            System.exit(job.waitForCompletion(true)?0:1);
//            } catch (IOException e) {
//            e.printStackTrace();
//            }
//       }
//    }
